/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uccart_project.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author KNO
 */
@Entity
@Table(name = "curso")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Curso.findAll", query = "SELECT c FROM Curso c"),
    @NamedQuery(name = "Curso.findByCursoId", query = "SELECT c FROM Curso c WHERE c.cursoId = :cursoId"),
    @NamedQuery(name = "Curso.findByCursoAula", query = "SELECT c FROM Curso c WHERE c.cursoAula = :cursoAula"),
    @NamedQuery(name = "Curso.findByCursoSede", query = "SELECT c FROM Curso c WHERE c.cursoSede = :cursoSede"),
    @NamedQuery(name = "Curso.findByCursoCantmax", query = "SELECT c FROM Curso c WHERE c.cursoCantmax = :cursoCantmax"),
    @NamedQuery(name = "Curso.findByCursoCantmin", query = "SELECT c FROM Curso c WHERE c.cursoCantmin = :cursoCantmin"),
    @NamedQuery(name = "Curso.findByCursoCantactual", query = "SELECT c FROM Curso c WHERE c.cursoCantactual = :cursoCantactual"),
    @NamedQuery(name = "Curso.findByCursoInicio", query = "SELECT c FROM Curso c WHERE c.cursoInicio = :cursoInicio"),
    @NamedQuery(name = "Curso.findByCursoFinal", query = "SELECT c FROM Curso c WHERE c.cursoFinal = :cursoFinal"),
    @NamedQuery(name = "Curso.findByCursoHorario", query = "SELECT c FROM Curso c WHERE c.cursoHorario = :cursoHorario"),
    @NamedQuery(name = "Curso.findByCursoHorainicio", query = "SELECT c FROM Curso c WHERE c.cursoHorainicio = :cursoHorainicio"),
    @NamedQuery(name = "Curso.findByCursoHorafin", query = "SELECT c FROM Curso c WHERE c.cursoHorafin = :cursoHorafin")})
public class Curso implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "curso_id")
    private String cursoId;
    @Column(name = "curso_aula")
    private String cursoAula;
    @Column(name = "curso_sede")
    private String cursoSede;
    @Basic(optional = false)
    @Column(name = "curso_cantmax")
    private int cursoCantmax;
    @Basic(optional = false)
    @Column(name = "curso_cantmin")
    private int cursoCantmin;
    @Column(name = "curso_cantactual")
    private Integer cursoCantactual;
    @Basic(optional = false)
    @Column(name = "curso_inicio")
    @Temporal(TemporalType.DATE)
    private Date cursoInicio;
    @Basic(optional = false)
    @Column(name = "curso_final")
    @Temporal(TemporalType.DATE)
    private Date cursoFinal;
    @Column(name = "curso_horario")
    private Serializable cursoHorario;
    @Column(name = "curso_horainicio")
    private Serializable cursoHorainicio;
    @Column(name = "curso_horafin")
    private Serializable cursoHorafin;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "curso")
    private List<Nota> notaList;
    @JoinColumn(name = "curso_codprofesor", referencedColumnName = "prof_id")
    @ManyToOne
    private Profesor cursoCodprofesor;
    @JoinColumn(name = "curso_periodo", referencedColumnName = "per_periodo")
    @ManyToOne
    private Periodo cursoPeriodo;
    @JoinColumn(name = "curso_codmateria", referencedColumnName = "materia_id")
    @ManyToOne
    private Materia cursoCodmateria;

    public Curso() {
    }

    public Curso(String cursoId) {
        this.cursoId = cursoId;
    }

    public Curso(String cursoId, int cursoCantmax, int cursoCantmin, Date cursoInicio, Date cursoFinal) {
        this.cursoId = cursoId;
        this.cursoCantmax = cursoCantmax;
        this.cursoCantmin = cursoCantmin;
        this.cursoInicio = cursoInicio;
        this.cursoFinal = cursoFinal;
    }

    public String getCursoId() {
        return cursoId;
    }

    public void setCursoId(String cursoId) {
        this.cursoId = cursoId;
    }

    public String getCursoAula() {
        return cursoAula;
    }

    public void setCursoAula(String cursoAula) {
        this.cursoAula = cursoAula;
    }

    public String getCursoSede() {
        return cursoSede;
    }

    public void setCursoSede(String cursoSede) {
        this.cursoSede = cursoSede;
    }

    public int getCursoCantmax() {
        return cursoCantmax;
    }

    public void setCursoCantmax(int cursoCantmax) {
        this.cursoCantmax = cursoCantmax;
    }

    public int getCursoCantmin() {
        return cursoCantmin;
    }

    public void setCursoCantmin(int cursoCantmin) {
        this.cursoCantmin = cursoCantmin;
    }

    public Integer getCursoCantactual() {
        return cursoCantactual;
    }

    public void setCursoCantactual(Integer cursoCantactual) {
        this.cursoCantactual = cursoCantactual;
    }

    public Date getCursoInicio() {
        return cursoInicio;
    }

    public void setCursoInicio(Date cursoInicio) {
        this.cursoInicio = cursoInicio;
    }

    public Date getCursoFinal() {
        return cursoFinal;
    }

    public void setCursoFinal(Date cursoFinal) {
        this.cursoFinal = cursoFinal;
    }

    public Serializable getCursoHorario() {
        return cursoHorario;
    }

    public void setCursoHorario(Serializable cursoHorario) {
        this.cursoHorario = cursoHorario;
    }

    public Serializable getCursoHorainicio() {
        return cursoHorainicio;
    }

    public void setCursoHorainicio(Serializable cursoHorainicio) {
        this.cursoHorainicio = cursoHorainicio;
    }

    public Serializable getCursoHorafin() {
        return cursoHorafin;
    }

    public void setCursoHorafin(Serializable cursoHorafin) {
        this.cursoHorafin = cursoHorafin;
    }

    @XmlTransient
    public List<Nota> getNotaList() {
        return notaList;
    }

    public void setNotaList(List<Nota> notaList) {
        this.notaList = notaList;
    }

    public Profesor getCursoCodprofesor() {
        return cursoCodprofesor;
    }

    public void setCursoCodprofesor(Profesor cursoCodprofesor) {
        this.cursoCodprofesor = cursoCodprofesor;
    }

    public Periodo getCursoPeriodo() {
        return cursoPeriodo;
    }

    public void setCursoPeriodo(Periodo cursoPeriodo) {
        this.cursoPeriodo = cursoPeriodo;
    }

    public Materia getCursoCodmateria() {
        return cursoCodmateria;
    }

    public void setCursoCodmateria(Materia cursoCodmateria) {
        this.cursoCodmateria = cursoCodmateria;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cursoId != null ? cursoId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Curso)) {
            return false;
        }
        Curso other = (Curso) object;
        if ((this.cursoId == null && other.cursoId != null) || (this.cursoId != null && !this.cursoId.equals(other.cursoId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.uccart_project.model.Curso[ cursoId=" + cursoId + " ]";
    }
    
}
